#if !defined(__CUEILLEUR_DE_TOUCHES_H)
#define __CUEILLEUR_DE_TOUCHES_H

#include "commun/definitions.h"
#include "commun/tampon.h"
#include "commun/instantane_du_piano.h"
#include "interface/observateur_evenement.h"

struct cueilleur_de_touches : public observateur_evenement {
	enum { nb_maximum_touches_simultanees = 4 };
private:
	bool &qwerty_;
	int modificateur_touche_;
	bool pedale_douce_;
	tampon<touche_du_piano, nb_maximum_touches_simultanees> panier_;
public:
	cueilleur_de_touches(bool &q) : qwerty_(q), modificateur_touche_(0), pedale_douce_(false) {}
	
	void souris_cliquee(int,int,bool) {}
	void touche_pressee(int,int,bool);
	
	instantane_du_piano vider_panier() {
		instantane_du_piano r;
		while(!panier_.est_vide())
			r[panier_.prelever()] = true;
		r[pedale_douce] = pedale_douce_;
		
		return r;
	}
};

#endif
